Properties ক্লাস কি এবং কিভাবে কাজ করে?

Properties ক্লাস এবং Configuration Management - জাভা ইউটিল.প্যাকেজ (Java.util Package) - Java Technologies

306

java.util.Properties ক্লাসটি key-value pair আকারে কনফিগারেশন ডেটা সংরক্ষণ করার জন্য ব্যবহৃত হয়। এটি Hashtable ক্লাসের একটি উপসেট হিসেবে কাজ করে এবং Map ইন্টারফেসের একটি বাস্তবায়ন। Properties ক্লাসটি মূলত কনফিগারেশন বা সেটিংস ফাইল (যেমন .properties ফাইল) লোড এবং ম্যানেজ করতে ব্যবহৃত হয়, যেখানে ডেটা সাধারণত string key-value pairs আকারে থাকে।

Properties ক্লাসটি একটি persistent ডেটা স্টোরেজ হিসেবে কাজ করে এবং এটি key-value পদ্ধতিতে ডেটা সংরক্ষণ করে। এটি input/output (I/O) অপারেশনেও ব্যবহৃত হয়, যেমন কনফিগারেশন ফাইল থেকে ডেটা লোড এবং সেই ডেটা ব্যবহার করে অ্যাপ্লিকেশন কনফিগারেশন সেট করা।

Properties ক্লাসের বৈশিষ্ট্য:

  1. Key-Value Pairs: Properties ক্লাস key-value আকারে ডেটা সংরক্ষণ করে, যেখানে key এবং value উভয়ই স্ট্রিং টাইপ হতে হবে।
  2. File I/O: এটি .properties ফাইল থেকে ডেটা পড়তে এবং সেই ডেটা অ্যাপ্লিকেশনে ব্যবহার করতে সহায়তা করে।
  3. Inheritance from Hashtable: Properties ক্লাস Hashtable থেকে উত্তরাধিকার সূত্রে পাওয়া অনেক বৈশিষ্ট্য ব্যবহার করে, তবে এটি শুধুমাত্র String টাইপের key এবং value সমর্থন করে।
  4. Default Values: Properties ক্লাসে একটি default values মেকানিজম রয়েছে, যেখানে আপনি যদি একটি কনফিগারেশন ফাইল লোড না করেন তবে এটি একটি ডিফল্ট মান ব্যবহার করতে পারে।

Properties ক্লাসের প্রধান মেথড:

  1. setProperty(String key, String value): একটি নির্দিষ্ট key এর জন্য value সেট করতে ব্যবহৃত হয়।
  2. getProperty(String key): একটি নির্দিষ্ট key এর জন্য value ফেরত দেয়।
  3. load(InputStream inStream): একটি properties ফাইল থেকে ডেটা লোড করতে ব্যবহৃত হয়।
  4. store(OutputStream outStream, String comments): একটি properties ফাইল এ ডেটা সংরক্ষণ করতে ব্যবহৃত হয়।
  5. getProperty(String key, String defaultValue): একটি key এর জন্য মান ফেরত দেয়, যদি key না পাওয়া যায় তবে একটি ডিফল্ট মান ফেরত দেয়।
  6. list(PrintStream out): সমস্ত properties তালিকা আকারে প্রিন্ট করে।

Properties ক্লাসের ব্যবহার:

উদাহরণ ১: Properties ক্লাসের মাধ্যমে কনফিগারেশন লোড করা

ধরা যাক, আপনার একটি .properties ফাইল রয়েছে যার মধ্যে কিছু কনফিগারেশন রয়েছে, এবং আপনি Properties ক্লাসের মাধ্যমে সেই কনফিগারেশন লোড করতে চান।

.properties ফাইল (config.properties):

username=admin
password=12345
url=https://example.com

উদাহরণ ২: Properties ক্লাস ব্যবহার করে কনফিগারেশন লোড এবং অ্যাক্সেস করা

import java.util.Properties;
import java.io.FileInputStream;
import java.io.IOException;

public class PropertiesExample {
    public static void main(String[] args) {
        // Properties ক্লাস অবজেক্ট তৈরি করা
        Properties properties = new Properties();
        
        try {
            // কনফিগারেশন ফাইল থেকে ডেটা লোড করা
            FileInputStream fis = new FileInputStream("config.properties");
            properties.load(fis);
            
            // ফাইল থেকে কনফিগারেশন ডেটা প্রিন্ট করা
            System.out.println("Username: " + properties.getProperty("username"));
            System.out.println("Password: " + properties.getProperty("password"));
            System.out.println("URL: " + properties.getProperty("url"));
            
            // ডিফল্ট মান ব্যবহার করা
            String timeout = properties.getProperty("timeout", "30");  // 30 হল ডিফল্ট মান
            System.out.println("Timeout: " + timeout);
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Output:

Username: admin
Password: 12345
URL: https://example.com
Timeout: 30

ব্যাখ্যা:

  • load() মেথড ব্যবহার করে config.properties ফাইল থেকে ডেটা লোড করা হয়েছে।
  • getProperty() মেথডের মাধ্যমে কনফিগারেশন মানগুলো অ্যাক্সেস করা হয়েছে।
  • getProperty() মেথডে দ্বিতীয় প্যারামিটার হিসেবে একটি ডিফল্ট মান দেওয়া হয়েছে, যদি timeout নামক কী ফাইলে না থাকে তবে সেটি 30 সেট হবে।

Properties ক্লাসে ডেটা সংরক্ষণ

আপনি Properties ক্লাসের সাহায্যে key-value pairs একটি ফাইলে সংরক্ষণ করতে পারেন। এর জন্য store() মেথড ব্যবহার করা হয়।

উদাহরণ ৩: Properties ক্লাসের মাধ্যমে ডেটা ফাইলে সংরক্ষণ

import java.util.Properties;
import java.io.FileOutputStream;
import java.io.IOException;

public class SavePropertiesExample {
    public static void main(String[] args) {
        // Properties ক্লাস অবজেক্ট তৈরি করা
        Properties properties = new Properties();
        
        // কনফিগারেশন ডেটা সেট করা
        properties.setProperty("username", "admin");
        properties.setProperty("password", "12345");
        properties.setProperty("url", "https://example.com");
        
        try {
            // Properties ফাইল এ ডেটা সংরক্ষণ করা
            FileOutputStream fos = new FileOutputStream("config_saved.properties");
            properties.store(fos, "Configuration File");
            
            System.out.println("Configuration saved successfully!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Output:

Configuration saved successfully!

config_saved.properties ফাইলটি তৈরি হবে এবং এটি এতে ডেটা সংরক্ষণ করবে:

#Configuration File
username=admin
password=12345
url=https://example.com

ব্যাখ্যা:

  • setProperty() মেথড ব্যবহার করে key-value pairs যোগ করা হয়েছে।
  • store() মেথডটি ডেটাকে একটি ফাইলে সংরক্ষণ করে এবং "Configuration File" মন্তব্য যুক্ত করে।

Properties ক্লাসের সুবিধা:

  1. Configuration Management:
    • Properties ক্লাস কনফিগারেশন সেটিংস সংরক্ষণ এবং লোড করার জন্য খুবই কার্যকরী। এটি একটি প্রপার্টি ফাইল (যেমন .properties) থেকে কনফিগারেশন ডেটা পড়তে এবং লিখতে সহায়তা করে।
  2. Key-Value Pairs:
    • Properties ক্লাস key-value আকারে ডেটা সংরক্ষণ করে, যা সহজেই অ্যাক্সেস এবং পরিবর্তন করা যায়।
  3. Default Values:
    • getProperty() মেথডের মাধ্যমে আপনি ডিফল্ট মান নির্ধারণ করতে পারেন, যা কনফিগারেশন ফাইলের কিছু key অনুপস্থিত থাকলে ব্যবহার করা হয়।
  4. Thread Safety:
    • Properties ক্লাস একটি synchronized ক্লাস, যা থ্রেড সেফ (thread-safe) হওয়ার জন্য কিছুটা অধিক সময়ে কাজ করতে পারে, তবে এটি সিঙ্ক্রোনাইজেশন মেকানিজম সরবরাহ করে।

Properties ক্লাসটি key-value pair ভিত্তিক কনফিগারেশন এবং সেটিংস ম্যানেজমেন্টের জন্য একটি কার্যকরী ক্লাস। এটি সহজেই properties ফাইল থেকে ডেটা লোড এবং সংরক্ষণ করতে সহায়তা করে। আধুনিক Java অ্যাপ্লিকেশনে Properties ক্লাসটি কনফিগারেশন এবং সেটিংস ম্যানেজমেন্টের জন্য একটি অন্যতম উপাদান, তবে Java 8 এর পর java.time প্যাকেজের মত নতুন API ব্যবহারের দিকে মনোযোগ দেয়া হয়েছে।

Content added By
Promotion

Are you sure to start over?

Loading...